home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / gnustuff / tos / updates / update28.zoo / gemlib / diffs
Encoding:
Text File  |  1993-02-22  |  54.7 KB  |  1,801 lines

  1. ===================================================================
  2. RCS file: /net/acae127/home/bammi/etc/src/master/atari/gemlib/Changelog,v
  3. retrieving revision 1.20
  4. diff -c -r1.20 Changelog
  5. *** 1.20    1992/12/28 08:07:07
  6. --- Changelog    1993/02/22 06:07:35
  7. ***************
  8. *** 299,301 ****
  9. --- 299,346 ----
  10.   gemfast.h:: ++jrb
  11.       sync with mntlib 25
  12.   ------------------------------- Patchlevel 26------------------------
  13. + gemfast.h:: ++jrb
  14. +     add new types for popup menus (falcon aes)
  15. +     dont declare _addrin/_addrout for gcc, because they are # defines
  16. +     in our case, not real arrays. (see common.h)
  17. + aesmenu:: ++jrb
  18. +     new bindings for popup/scroll menus (falcon aes)
  19. +         menu_popup() menu_attach() menu_istart() menu_settings()
  20. + aesbind.h:: ++jrb
  21. +     add protos for new bindings.
  22. + mincl:: ++jrb
  23. +     add targets for  new menu_*() fns
  24. + vdibez.c:: ++jrb
  25. +     bring stuff in sync with the bez docs in SpeedoGdos. no new
  26. +         functions. just more info about the old ones, and some of the
  27. +     bindings have  contrl[2|4] set to specific values (and the
  28. +     docs dont say why!).
  29. + vdiinq.c:: ++jrb
  30. +     updated the comment at the top about vqt_name() since its
  31. +     official now in the SpeedoGDOS docs.
  32. + vdifsm.c:: ++jrb
  33. +     v_killoutline() doesnt exist any more
  34. +     v_getoutline() is totally changed
  35. +     vst_error() -- make it 16/32 bit clean.
  36. +     vqt_advance32() -- new fn
  37. +     vst_setsize32() -- new fn
  38. +         vst_arbpt32() -- new fn
  39. +     v_ftext_offset() -- new fn
  40. +     vst_charmap() -- new fn
  41. +     vst_kern() -- new fn
  42. +     vqt_fontheader() -- new fn
  43. +     vqt_trackkern() -- new fn
  44. +     vqt_pairkern() -- new fn
  45. +     v_getbitmap_info() -- totally new
  46. + mincl, vdibind.h:: ++jrb
  47. +     adjust for above changes.
  48. + ------------------------------- Patchlevel 27 -------------------------------
  49. ===================================================================
  50. RCS file: /net/acae127/home/bammi/etc/src/master/atari/gemlib/PatchLev.h,v
  51. retrieving revision 1.18
  52. diff -c -r1.18 PatchLev.h
  53. *** 1.18    1992/12/28 08:07:08
  54. --- PatchLev.h    1993/02/22 06:07:36
  55. ***************
  56. *** 1,4 ****
  57. ! #define PatchLevel "26"
  58.   
  59.   /*
  60.    *    the Patch Level above is to identify the version
  61. --- 1,4 ----
  62. ! #define PatchLevel "27"
  63.   
  64.   /*
  65.    *    the Patch Level above is to identify the version
  66. ===================================================================
  67. RCS file: /net/acae127/home/bammi/etc/src/master/atari/gemlib/aesbind.h,v
  68. retrieving revision 1.11
  69. diff -c -r1.11 aesbind.h
  70. *** 1.11    1992/06/03 19:04:28
  71. --- aesbind.h    1993/02/22 06:07:39
  72. ***************
  73. *** 14,20 ****
  74.   __EXTERN int    appl_init __PROTO((void));
  75.   __EXTERN int    appl_read __PROTO((int ApId, int Length, void *ApPbuff));
  76.   __EXTERN int    appl_write __PROTO((int ApId, int Length, void *ApPbuff));
  77. ! __EXTERN int    appl_find __PROTO((char *Name));
  78.   __EXTERN int    appl_tplay __PROTO((void *Mem, int Num, int Scale));
  79.   __EXTERN int    appl_trecord __PROTO((void *Mem, int Count));
  80.   __EXTERN int    appl_exit __PROTO((void));
  81. --- 14,20 ----
  82.   __EXTERN int    appl_init __PROTO((void));
  83.   __EXTERN int    appl_read __PROTO((int ApId, int Length, void *ApPbuff));
  84.   __EXTERN int    appl_write __PROTO((int ApId, int Length, void *ApPbuff));
  85. ! __EXTERN int    appl_find __PROTO((const char *Name));
  86.   __EXTERN int    appl_tplay __PROTO((void *Mem, int Num, int Scale));
  87.   __EXTERN int    appl_trecord __PROTO((void *Mem, int Count));
  88.   __EXTERN int    appl_exit __PROTO((void));
  89. ***************
  90. *** 92,98 ****
  91. --- 92,106 ----
  92.   __EXTERN int    menu_tnormal __PROTO((void *Tree, int Item, int NormalFlag));
  93.   __EXTERN int    menu_text __PROTO((void *Tree, int Item, char *Text));
  94.   __EXTERN int    menu_register __PROTO((int ApId, char *MenuText));
  95. + __EXTERN int    menu_popup __PROTO((MENU *me_menu, int me_xpos, int me_ypos,
  96. +                                     MENU *me_mdata));
  97. + __EXTERN int    menu_attach __PROTO((int me_flag, OBJECT *me_tree, int me_item,
  98. +                                      MENU *me_mdata));
  99. + __EXTERN int    menu_istart __PROTO((int me_flag, OBJECT *me_tree,
  100. +                                      int me_imenu, int me_item));
  101. + __EXTERN int    menu_settings __PROTO((int me_flag, MN_SET *me_values));
  102.   
  103.   __EXTERN int    objc_add __PROTO((void *Tree, int Parent, int Child));
  104.   __EXTERN int    objc_delete __PROTO((void *Tree, int Object));
  105.   __EXTERN int    objc_draw __PROTO((void *Tree, int Start, int Depth, int Cx,
  106. ***************
  107. *** 101,108 ****
  108. --- 109,121 ----
  109.                      int My));
  110.   __EXTERN int    objc_offset __PROTO((void *Tree, int Object, int *X, int *Y));
  111.   __EXTERN int    objc_order __PROTO((void *Tree, int Object, int NewPos));
  112. + #ifdef __TCC_GEMLIB__
  113. + __EXTERN int    objc_edit __PROTO((void *Tree, int Object, int Char, int *Index,
  114. +                    int Kind)); 
  115. + #else
  116.   __EXTERN int    objc_edit __PROTO((void *Tree, int Object, int Char, int Index,
  117.                      int Kind, int *NewIndex)); 
  118. + #endif
  119.   __EXTERN int    objc_change __PROTO((void *Tree, int Object, int Res, int Cx,
  120.                        int Cy, int Cw, int Ch, int NewState,
  121.                        int Redraw));
  122. ***************
  123. *** 134,141 ****
  124. --- 147,158 ----
  125.                      int Wh));
  126.   __EXTERN int    wind_close __PROTO((int WindowHandle));
  127.   __EXTERN int    wind_delete __PROTO((int WindowHandle));
  128. + #ifdef __TCC_GEMLIB__
  129. + __EXTERN int    wind_get __PROTO((int WindowHandle, int What, ...));
  130. + #else
  131.   __EXTERN int    wind_get __PROTO((int WindowHandle, int What,
  132.                     int *W1, int *W2, int *W3, int *W4)); 
  133. + #endif
  134.   __EXTERN int    wind_set __PROTO((int WindowHandle, int What, ...));
  135.   __EXTERN int    wind_find __PROTO((int X, int Y));
  136.   __EXTERN int    wind_update __PROTO((int Code));
  137. ===================================================================
  138. RCS file: /net/acae127/home/bammi/etc/src/master/atari/gemlib/aesmenu.c,v
  139. retrieving revision 1.5
  140. diff -c -r1.5 aesmenu.c
  141. *** 1.5    1991/09/06 02:10:31
  142. --- aesmenu.c    1993/02/22 06:07:41
  143. ***************
  144. *** 7,12 ****
  145. --- 7,16 ----
  146.    *        menu_tnormal    Display a menu item in normal/rev video
  147.    *        menu_text        Change the text of a menu item
  148.    *        menu_register    Put desk accessory menu item in Desk menu
  149. +  *          menu_popup          Display a popup menu
  150. +  *          menu_attach         Attach, change, remove or inq about a submenu
  151. +  *          menu_istart         Set / inq about starting menu item of a submenu
  152. +  *          menu_settings       Set / inq submenu delay/scroll values
  153.    *
  154.    *        ++jrb    bammi@cadence.com
  155.    *        modified: mj -- ntomczak@vm.ucs.ualberta.ca
  156. ***************
  157. *** 21,26 ****
  158. --- 25,34 ----
  159.   #define L_menu_tno
  160.   #define L_menu_tex
  161.   #define L_menu_reg
  162. + #define L_menu_pop
  163. + #define L_menu_att
  164. + #define L_menu_ist
  165. + #define L_menu_set
  166.   
  167.   #endif /* __DEF_ALL__ */
  168.   
  169. ***************
  170. *** 113,117 ****
  171. --- 121,208 ----
  172.       return __aes__(AES_CONTROL_ENCODE(35, 1, 1, 1));
  173.   }
  174.   #endif /* L_menu_reg */
  175. + #include <gemfast.h> /* for MENU, OBJECT etc */
  176. + #ifdef L_menu_pop
  177. + /* Allows an application to display a popup menu anywhere on the screen.  The
  178. +  * popup menu may also have submenus.  If the number of menu items exceed the
  179. +  * menu scroll height, the menu may also be set to scroll.  menu_settings can
  180. +  * be used to set the height at which all menus will start to scroll.
  181. +  *
  182. +  * returns 0 on failure, and data in me_data is invalid
  183. +  * returns 1 on success, data in me_data is valid
  184. +  */
  185. + int menu_popup(MENU *me_menu, int me_xpos, int me_ypos, MENU *me_mdata)
  186. + {
  187. +     _int_in[0]   =  me_xpos;
  188. +     _int_in[1]   =  me_ypos;
  189. +     _addrin[0]  =  me_menu;
  190. +     _addrin[1]  =  me_mdata;
  191. +     
  192. +     return __aes__(AES_CONTROL_ENCODE(36, 2, 1, 2));
  193. + }
  194. + #endif /* L_menu_pop */
  195. + #ifdef L_menu_att
  196. + /* Allows an application to attach, change, remove or inquire about a submenu
  197. +  * associated with a menu item.
  198. +  *
  199. +  * returns:0 failure: the submenu was not attached for whatever reasons
  200. +  *         1 success: the submenu was attached, changed or removed successfully
  201. +  */
  202. + int menu_attach(int me_flag, OBJECT *me_tree, int me_item, MENU *me_mdata)
  203. + {
  204. +     _int_in[0] = me_flag;
  205. +     _int_in[1] = me_item;
  206. +     _addrin[0] = me_tree;
  207. +     _addrin[1] = me_mdata;
  208. +     return __aes__(AES_CONTROL_ENCODE(37, 2, 1, 2));
  209. + }
  210. + #endif /*  L_menu_att */
  211. + #ifdef L_menu_ist
  212. + /* Allows an application to set or inquire the starting menu item of a submenu
  213. +  * that is associated with a menu item.  The submenu is shifted vertically so
  214. +  * that the starting menu item is aligned with the menu item that is associated
  215. +  * with this submenu.  
  216. +  *
  217. +  * returns: 0 failure: the submenu is not associated with a menu item.  The
  218. +  *                     submenu must be attached via menu_attach before this
  219. +  *                     call can be made. 
  220. +  *         >0 success: the starting menu item is currently set to this value.
  221. +  */
  222. + int menu_istart(int me_flag, OBJECT *me_tree, int me_imenu, int me_item)
  223. + {
  224. +     _int_in[0] = me_flag;
  225. +     _int_in[1] = me_imenu;
  226. +     _int_in[2] = me_item;
  227. +     _addrin[0] =  me_tree;
  228. +     return __aes__(AES_CONTROL_ENCODE(38, 3, 1, 1));
  229. + }
  230. + #endif /* L_menu_ist */
  231. + #ifdef L_menu_set
  232. + /* Allows an application to set or inquire the submenu delay values and the
  233. +  * menu scroll height value. 
  234. +  *
  235. +  * returns 1 always
  236. +  */
  237. + int menu_settings(int me_flag, MN_SET *me_values)
  238. + {
  239. +     _int_in[0] = me_flag;
  240. +     
  241. +     _addrin[0] = me_values;
  242. +     return __aes__(AES_CONTROL_ENCODE(39, 1, 1, 1));
  243. + }    
  244. + #endif /* L_menu_set */
  245.   
  246.   /* - eof - */
  247. ===================================================================
  248. RCS file: /net/acae127/home/bammi/etc/src/master/atari/gemlib/common.h,v
  249. retrieving revision 1.10
  250. diff -c -r1.10 common.h
  251. *** 1.10    1991/09/06 02:10:31
  252. --- common.h    1993/02/22 06:07:42
  253. ***************
  254. *** 5,12 ****
  255.    *
  256.    *    modified:  mj --  ntomczak@vm.ucs.ualberta.ca
  257.    */
  258.   
  259.   /* Array sizes in vdi control block */
  260.   
  261.   #define CNTRLMAX    12   /* It seems that 11 is enough - max reached
  262. --- 5,13 ----
  263.    *
  264.    *    modified:  mj --  ntomczak@vm.ucs.ualberta.ca
  265.    */
  266. + #ifndef _COMMON_H
  267. + #define _COMMON_H
  268.   
  269.   /* Array sizes in vdi control block */
  270.   
  271.   #define CNTRLMAX    12   /* It seems that 11 is enough - max reached
  272. ***************
  273. *** 90,92 ****
  274. --- 91,95 ----
  275.   /* vdi trap interface func */
  276.   void __vdi__(unsigned long coded_contrl, int handle);
  277.   void vdi(void);
  278. + #endif /* _COMMON_H */
  279. ===================================================================
  280. RCS file: /net/acae127/home/bammi/etc/src/master/atari/gemlib/gemfast.h,v
  281. retrieving revision 1.12
  282. diff -c -r1.12 gemfast.h
  283. *** 1.12    1992/12/28 08:07:11
  284. --- gemfast.h    1993/02/22 06:07:43
  285. ***************
  286. *** 1,6 ****
  287. --- 1,10 ----
  288.   #ifndef _GEMFAST_H
  289.   #define _GEMFAST_H
  290.   
  291. + #ifndef _COMPILER_H
  292. + # include <compiler.h>
  293. + #endif
  294.   #ifdef __cplusplus
  295.   extern "C" {
  296.   #endif
  297. ***************
  298. *** 236,241 ****
  299. --- 240,246 ----
  300.   #define TOUCHEXIT    0x0040
  301.   #define HIDETREE    0x0080
  302.   #define INDIRECT    0x0100
  303. + #define SUBMENU         0x0800          /* falcon aes hierarchical menus */
  304.           /* Object states */
  305.   #define NORMAL         0x0000
  306.   #define SELECTED    0x0001
  307. ***************
  308. *** 284,292 ****
  309. --- 289,301 ----
  310.   
  311.   typedef struct
  312.   {
  313. + #ifdef __TCC_COMPAT__
  314. +     void        *fd_addr;
  315. + #else /* !__TCC_COMPAT__ */
  316.       long        fd_addr;    /* Addrerss of upper left corner of first*/
  317.                                       /* plane of raster area. If NULL then   */
  318.                                       /* MFDB is for a physical device        */
  319. + #endif /* !__TCC_COMPAT__ */
  320.       short        fd_w;        /* Form Width in Pixels                 */
  321.       short        fd_h;       /* Form Height in Pixels                */
  322.       short        fd_wdwidth; /* Form Width in shorts(fd_w/sizeof(int)*/
  323. ***************
  324. *** 421,432 ****
  325.   
  326.       } BITBLK;
  327.   
  328. - typedef struct user_block
  329. -     {
  330. -         int  (*ub_code)(void *parmblock); /* really PARMBLK *parmblock */
  331. -     long ub_parm;
  332. -     } USERBLK;
  333.   #ifndef __TCC_COMPAT__
  334.   typedef struct object
  335.       {
  336. --- 430,435 ----
  337. ***************
  338. *** 445,459 ****
  339.   #else
  340.   
  341.   typedef struct {
  342. !     unsigned short character   :  8;
  343. !     signed   short framesize   :  8;
  344. !     unsigned short framecol    :  4;
  345. !     unsigned short textcol     :  4;
  346. !     unsigned short textmode    :  1;
  347. !     unsigned short fillpattern :  3;
  348. !     unsigned short interiorcol :  4;
  349.   } bfobspec;
  350.   
  351.   typedef union __u_ob_spec {
  352.       TEDINFO        *tedinfo;
  353.       long        index;
  354. --- 448,464 ----
  355.   #else
  356.   
  357.   typedef struct {
  358. !     unsigned int character   :  8;
  359. !     signed   int framesize   :  8;
  360. !     unsigned int framecol    :  4;
  361. !     unsigned int textcol     :  4;
  362. !     unsigned int textmode    :  1;
  363. !     unsigned int fillpattern :  3;
  364. !     unsigned int interiorcol :  4;
  365.   } bfobspec;
  366.   
  367. + struct user_block;    /* forward declaration */
  368.   typedef union __u_ob_spec {
  369.       TEDINFO        *tedinfo;
  370.       long        index;
  371. ***************
  372. *** 462,468 ****
  373.           bfobspec    obspec;
  374.       BITBLK        *bitblk;
  375.       ICONBLK        *iconblk;
  376. !         USERBLK     *userblk;
  377.   /*    APPLBLK        *applblk;
  378.       char        *string;    */
  379.   } U_OB_SPEC;
  380. --- 467,473 ----
  381.           bfobspec    obspec;
  382.       BITBLK        *bitblk;
  383.       ICONBLK        *iconblk;
  384. !     struct user_block *userblk;
  385.   /*    APPLBLK        *applblk;
  386.       char        *string;    */
  387.   } U_OB_SPEC;
  388. ***************
  389. *** 494,499 ****
  390. --- 499,514 ----
  391.       long     pb_parm;
  392.       } PARMBLK;
  393.   
  394. + typedef struct user_block
  395. +     {
  396. + #ifdef __TCC_COMPAT__
  397. +         int __CDECL (*ub_code)(PARMBLK *parmblock);
  398. + #else
  399. +         int __CDECL (*ub_code)(void *parmblock); /* really PARMBLK *parmblock */
  400. + #endif
  401. +     long ub_parm;
  402. +     } USERBLK;
  403.                           /* used in RSCREATE.C    */
  404.   typedef struct rshdr
  405.   {
  406. ***************
  407. *** 519,527 ****
  408. --- 534,586 ----
  409.   
  410.   #define DESKTOP_HANDLE 0
  411.   
  412. + /* falcon aes menu_popup and menu_attach structure for passing and receiving
  413. +  * submenu data.
  414. +  */
  415. + typedef struct _menu
  416. + {
  417. +     OBJECT *mn_tree;    /* the object tree of the menu */
  418. +     short   mn_menu;    /* the parent object of the menu items */
  419. +     short   mn_item;    /* the starting menu item */
  420. +     short   mn_scroll;  /* the scroll field status of the menu 
  421. +                            0  - The menu will not scroll
  422. +                            !0 - The menu will scroll if the number of menu
  423. +                                 items exceed the menu scroll height. The 
  424. +                 non-zero value is the object at which 
  425. +                 scrolling will begin.  This will allow one
  426. +                 to have a menu in which the scrollable region
  427. +                 is only a part of the whole menu.  The value
  428. +                 must be a menu item in the menu.
  429. +                 
  430. +                                 menu_settings can be used to change the menu
  431. +                                 scroll height. 
  432. +                          NOTE: If the scroll field status is !0, the menu
  433. +                                items must consist entirely of G_STRINGS. */
  434. +     short   mn_keystate; /* The CTRL, ALT, SHIFT Key state at the time the
  435. +                 mouse button was pressed. */
  436. + } MENU;
  437. + /* menu_settings uses a new structure for setting and inquiring the submenu
  438. +  * delay values and the menu scroll height.  The delay values are measured in
  439. +  * milliseconds and the height is based upon the number of menu items.
  440. +  */
  441. + typedef struct _mn_set
  442. + {
  443. +     long Display;    /*  the submenu display delay     */
  444. +     long Drag;       /*  the submenu drag delay        */
  445. +     long Delay;      /*  the single-click scroll delay */
  446. +     long Speed;      /*  the continuous scroll delay   */
  447. +     short Height;    /*  the menu scroll height        */
  448. + } MN_SET;
  449.   /* (user visible) binding arrays */
  450.   extern short         _intin[], _intout[], _ptsin[], _ptsout[];
  451. + #ifndef __GNUC__ /* for gcc see common.h in gemlib */
  452.   extern void          *_addrin[], *_addrout[];
  453. + #endif
  454.   extern int        gl_apid, gl_ap_version;
  455.   
  456.   #ifdef __cplusplus
  457. ===================================================================
  458. RCS file: /net/acae127/home/bammi/etc/src/master/atari/gemlib/mincl,v
  459. retrieving revision 1.8
  460. diff -c -r1.8 mincl
  461. *** 1.8    1992/04/19 16:47:42
  462. --- mincl    1993/02/22 06:07:45
  463. ***************
  464. *** 26,33 ****
  465.         shel_put.o 
  466.   
  467.   AESMENU = menu_bar.o menu_ich.o menu_ien.o menu_tno.o menu_tex.o \
  468. !       menu_reg.o 
  469.   
  470.   AESOBJ = objc_add.o objc_del.o objc_dra.o objc_fin.o objc_off.o \
  471.        objc_ord.o objc_edi.o objc_cha.o 
  472.   
  473. --- 26,34 ----
  474.         shel_put.o 
  475.   
  476.   AESMENU = menu_bar.o menu_ich.o menu_ien.o menu_tno.o menu_tex.o \
  477. !       menu_reg.o menu_pop.o menu_att.o menu_ist.o menu_set.o
  478.   
  479.   AESOBJ = objc_add.o objc_del.o objc_dra.o objc_fin.o objc_off.o \
  480.        objc_ord.o objc_edi.o objc_cha.o 
  481.   
  482. ***************
  483. *** 59,68 ****
  484.         vsc_expo.o v_meta_e.o v_write_.o vm_pages.o vm_coord.o \
  485.         vm_filen.o v_escape.o 
  486.   
  487. ! VDIFSM = vqt_fext.o v_ftext.o v_killou.o v_getout.o vst_scra.o vst_erro.o \
  488. !      v_shtext.o vst_arbp.o vqt_adva.o vqt_devi.o v_saveca.o \
  489. !      v_loadca.o v_flushc.o vst_sets.o vst_skew.o vqt_get_.o \
  490. !      vqt_cach.o v_getbit.o
  491.   
  492.   VDIGDP = v_bar.o    v_arc.o  v_piesli.o v_circle.o v_ellarc.o \
  493.        v_ellpie.o v_ellips.o v_rbox.o v_rfbox.o  v_justif.o 
  494. --- 60,70 ----
  495.         vsc_expo.o v_meta_e.o v_write_.o vm_pages.o vm_coord.o \
  496.         vm_filen.o v_escape.o 
  497.   
  498. ! VDIFSM = vqt_fext.o v_ftext.o v_fteof.o v_getout.o vst_scra.o vst_erro.o \
  499. !      v_shtext.o vst_arbp.o vst_ar32.o vqt_adva.o vqt_ad32.o vqt_devi.o \
  500. !      v_saveca.o v_loadca.o v_flushc.o vst_sets.o vst_se32.o vst_skew.o \
  501. !      vqt_get_.o vqt_cach.o vst_char.o vst_kern.o vqt_fnt.o vqt_trac.o \
  502. !      vqt_pair.o v_getbit.o
  503.   
  504.   VDIGDP = v_bar.o    v_arc.o  v_piesli.o v_circle.o v_ellarc.o \
  505.        v_ellpie.o v_ellips.o v_rbox.o v_rfbox.o  v_justif.o 
  506. ===================================================================
  507. RCS file: /net/acae127/home/bammi/etc/src/master/atari/gemlib/vdibez.c,v
  508. retrieving revision 1.2
  509. diff -c -r1.2 vdibez.c
  510. *** 1.2    1992/04/19 16:47:42
  511. --- vdibez.c    1993/02/22 06:07:46
  512. ***************
  513. *** 10,15 ****
  514. --- 10,18 ----
  515.    *  set of symbols with compilers which need symbols unique in the
  516.    *  first seven characters.  Besides this resolution is required
  517.    *  by "The Standard" :-)
  518. +  *
  519. +  *  ++jrb sync up with SpeedoGDOS docs
  520. +  *
  521.    */
  522.   #include "common.h"
  523.   #ifndef _COMPILER_H
  524. ***************
  525. *** 39,47 ****
  526.    * Inform GDOS about  location and size of a buffer which  GDOS
  527.    * can use for creation of Bezier curves.
  528.    *    buf_p  is a pointer to an address of a buffer
  529. !  *    size   its a buffer size in 2-byte words (!!)
  530. !  *           or 16-bytes paragraphs - depends in which document
  531. !  *           you believe.
  532.    * If buf_p is NULL, then space for a buffer will be allocated
  533.    * by GDOS - using Malloc (who knows where to look for this space?)
  534.    *
  535. --- 42,49 ----
  536.    * Inform GDOS about  location and size of a buffer which  GDOS
  537.    * can use for creation of Bezier curves.
  538.    *    buf_p  is a pointer to an address of a buffer
  539. !  *    size   its a buffer size in 16-bytes paragraphs
  540. !  *
  541.    * If buf_p is NULL, then space for a buffer will be allocated
  542.    * by GDOS - using Malloc (who knows where to look for this space?)
  543.    *
  544. ***************
  545. *** 54,61 ****
  546.       
  547.       *wptr++ = (short) buf_p;           /* low word of an address */
  548.       *wptr++ = (short)((long)buf_p >> 16);  /* high word of an address */
  549. !     *wptr =   (short) size;               /* size of buffer in something */
  550.        wptr = (short *)_contrl;
  551.       *wptr++ = -1;    /* 0  - opcode */
  552.       *wptr++ = 0;    /* 1 */
  553. --- 56,63 ----
  554.       
  555.       *wptr++ = (short) buf_p;           /* low word of an address */
  556.       *wptr++ = (short)((long)buf_p >> 16);  /* high word of an address */
  557. !     *wptr =   (short) size;               /* size of buffer in paragraphs */
  558. !                                            /* para == 16 bytes */
  559.        wptr = (short *)_contrl;
  560.       *wptr++ = -1;    /* 0  - opcode */
  561.       *wptr++ = 0;    /* 1 */
  562. ***************
  563. *** 93,100 ****
  564.   /*
  565.    * v_bez_on (alias v_bezon)
  566.    * Enable Bezier capabilities.
  567. !  * Find a number of segments per Bezier curve.
  568. !  * Returns logarithm in a base of 2 from that number
  569.    */
  570.   
  571.   __asm__(".stabs \"_v_bezon\",5,0,0,_v_bez_on"); /* dept of clean tricks */
  572. --- 95,105 ----
  573.   /*
  574.    * v_bez_on (alias v_bezon)
  575.    * Enable Bezier capabilities.
  576. !  * Returns maximum Bezier depth (a measure of smoothness). The return
  577. !  * value can range from 0-7, and is the exponent of 2, giving the
  578. !  * number of line segments that make up the curve. 
  579. !  * 0 == 2**0 == 1 == straight line and
  580. !  * 7 == 2**7 == 128 line segments.
  581.    */
  582.   
  583.   __asm__(".stabs \"_v_bezon\",5,0,0,_v_bez_on"); /* dept of clean tricks */
  584. ***************
  585. *** 101,107 ****
  586. --- 106,114 ----
  587.   int
  588.   v_bez_on (int handle)
  589.   {
  590. +     _contrl[4] = 4;    /* dont know why, but atari docs say so! */
  591.       __vdi__(VDI_CONTRL_ENCODE(11, 1, 0, 13), handle);
  592. +     _contrl[4] = 0;    /* clear it back */
  593.       return *_intout;
  594.   }
  595.   #endif /* L_v_bez_on */
  596. ***************
  597. *** 112,117 ****
  598. --- 119,125 ----
  599.    * v_bez_off (alias v_bezoff)
  600.    * Disable Bezier capabilities.
  601.    * Free space allocated by GDOS for Bezier curves.
  602. +  * (see v_set_app_buff for memory alloc info)
  603.    */
  604.   __asm__(".stabs \"_v_bezoff\",5,0,0,_v_bez_off"); /* dept of clean tricks */
  605.   void
  606. ***************
  607. *** 175,181 ****
  608. --- 183,197 ----
  609.       while (optr < end)
  610.           *optr++ = *xyarr++;
  611.   #endif
  612. +     _contrl[2] = 2; /* dont know why, the atari docs say so without */
  613. +     _contrl[4] = 6; /* any  explaination */
  614.       __vdi__(VDI_CONTRL_ENCODE(cntrl0, count, ((count + 1) >> 1), 13), handle);
  615. +     _contrl[2] = 0;
  616. +     _contrl[4] = 0;
  617.   #ifdef __MSHORT__
  618.       /* restore standard parameter block */ 
  619.       _vdiparams[2] = (void *) _ptsin;
  620. ***************
  621. *** 251,257 ****
  622. --- 267,280 ----
  623.       while (optr < end)
  624.           *optr++ = *xyarr++;
  625.   #endif
  626. +     _contrl[2] = 2; /* dont know why, the atari docs say so without */
  627. +     _contrl[4] = 6; /* any  explaination */
  628.       __vdi__(VDI_CONTRL_ENCODE(cntrl0, count, ((count + 1) >> 1), 13), handle);
  629. +     _contrl[2] = 0;
  630. +     _contrl[4] = 0;
  631.   #ifdef __MSHORT__
  632.       /* restore standard parameter block */ 
  633.       _vdiparams[2] = (void *) _ptsin;
  634. ***************
  635. *** 296,306 ****
  636.       *wptr++ = 0;    /* 1 */
  637.        wptr++;        /* 2 */
  638.       *wptr++ = 3;    /* 3  - # of entries in _intin */
  639. !      wptr++;        /* 4 */
  640.       *wptr++ = 99;    /* 5 - id */
  641.       *wptr   = handle;    /* 6 - handle */
  642.       vdi();        /* call vdi */
  643.       return (*actual = *_intout);
  644.   }
  645.   #endif /* L_v_bez_qu */
  646. --- 319,330 ----
  647.       *wptr++ = 0;    /* 1 */
  648.        wptr++;        /* 2 */
  649.       *wptr++ = 3;    /* 3  - # of entries in _intin */
  650. !     *wptr++ = 1;    /* 4 - atari doesnt say why! */
  651.       *wptr++ = 99;    /* 5 - id */
  652.       *wptr   = handle;    /* 6 - handle */
  653.       vdi();        /* call vdi */
  654. !     _contrl[4] = 0;     /* clear it back */
  655. !     
  656.       return (*actual = *_intout);
  657.   }
  658.   #endif /* L_v_bez_qu */
  659. ===================================================================
  660. RCS file: /net/acae127/home/bammi/etc/src/master/atari/gemlib/vdibind.h,v
  661. retrieving revision 1.12
  662. diff -c -r1.12 vdibind.h
  663. *** 1.12    1992/06/03 19:04:28
  664. --- vdibind.h    1993/02/22 06:07:47
  665. ***************
  666. *** 285,305 ****
  667.   __EXTERN unsigned long vq_gdos __PROTO((void));
  668.   #endif /* __GNUC__ | !__NO_INLINE__ */    
  669.   
  670. ! /* FSM gdos bindings */
  671.   
  672. ! /* ---------------------------------------------------------------------------
  673. !  * Retrieve placement information for FSM generated characters
  674. !  * Information is placed in infoarray of 52 ints.
  675. !  * Borrow a soothsayer from DRI or Atari to find its meaning.
  676. !  *
  677. !  * This is a temporary bindings since one genius decided
  678. !  * that some entries in infoarray will represent real numbers.
  679. !  * You may fully expect that that this representation of reals is
  680. !  * absolutely different from what your compiler is using.
  681. !  * Count your lucky stars if at least sizeof(double) == 2 * sizeof(int).
  682. !  * Or maybe sizeof(double) is supposed to be sizeof(float)?
  683. !  */
  684. ! __EXTERN void v_getbitmap_info __PROTO((int handle, int ch, int infoarray[]));
  685.   
  686.   /*
  687.    * Inquire text extent, accounting for FSM text placement
  688. --- 285,306 ----
  689.   __EXTERN unsigned long vq_gdos __PROTO((void));
  690.   #endif /* __GNUC__ | !__NO_INLINE__ */    
  691.   
  692. ! /* FSM/SpeedGDOS bindings */
  693.   
  694. ! /* Get Character Bitmap Information. This call provides information to allow
  695. !  * the caller to know the exact size and placement of a given character.  This
  696. !  * information includes the character's x and y advance vectors, the x and y
  697. !  * offsets, and the bitmap dimensions of the character. The advance vector
  698. !  * represents the amount to add to the current point to place the following
  699. !  * character.  The x and y offsets, when added to the current point, give the
  700. !  * caller the location of the upper left hand corner of the bitmap.  The width
  701. !  * and height of the bitmap are returned as 16 bit integers.  All other values
  702. !  * are returned in fix31 representation.
  703. !  */
  704. ! __EXTERN void v_getbitmap_info __PROTO((int handle, int ch,  long *advancex,
  705. ! long *advancey, long *xoffset, long *yoffset, int *width, int *height,
  706. ! short **bitmap));
  707.   
  708.   /*
  709.    * Inquire text extent, accounting for FSM text placement
  710. ***************
  711. *** 307,325 ****
  712.   __EXTERN void vqt_f_extent __PROTO((int handle, const char *str, int extent[]));
  713.   
  714.   /*
  715. !  * Draw FSM text (accounts for fractional advances in rotated text)
  716.    */
  717.   __EXTERN void v_ftext __PROTO((int handle, int x, int y, const char *str));
  718. ! /*
  719. !  * Release memory associated with outline component generated by v_getoutline()
  720. !  */
  721. ! __EXTERN void v_killoutline __PROTO((int handle, void *component));
  722.   
  723.   /*
  724.    * Generate an outline for character ch, and return the address of the outline.
  725.    */
  726. ! __EXTERN void v_getoutline __PROTO((int handle, int ch, void **component));
  727.   
  728.   /*
  729.    * Set scratch buffer allocation mode.
  730. --- 308,324 ----
  731.   __EXTERN void vqt_f_extent __PROTO((int handle, const char *str, int extent[]));
  732.   
  733.   /*
  734. !  * Draw outline font text (accounts for fractional advances in rotated text)
  735.    */
  736.   __EXTERN void v_ftext __PROTO((int handle, int x, int y, const char *str));
  737. ! __EXTERN void v_ftext_offset __PROTO((int handle, int x, int y,
  738. !                                       const char *str, int *offset)); 
  739.   
  740.   /*
  741.    * Generate an outline for character ch, and return the address of the outline.
  742.    */
  743. ! __EXTERN void v_getoutline __PROTO((int handle, int ch, int *xyarray,
  744. !                                  char *bezarray, int maxverts, int *numverts));
  745.   
  746.   /*
  747.    * Set scratch buffer allocation mode.
  748. ***************
  749. *** 347,358 ****
  750.    */
  751.   __EXTERN int    vst_arbpt __PROTO((  int handle, int point, int *wchar,
  752.                      int *hchar, int *wcell, int *hcell ));
  753.   
  754.   /*
  755. !  * Inquire FSM text advance placement vector.
  756.    */
  757.   __EXTERN void    vqt_advance __PROTO(( int handle, int ch, int *xadv,
  758.                        int *yadv, int *xrem, int *yrem)); 
  759.   
  760.   /*
  761.    * Inquire device status information.
  762. --- 346,361 ----
  763.    */
  764.   __EXTERN int    vst_arbpt __PROTO((  int handle, int point, int *wchar,
  765.                      int *hchar, int *wcell, int *hcell ));
  766. + __EXTERN long    vst_arbpt32 __PROTO((  int handle, long point, int *wchar,
  767. +                    int *hchar, int *wcell, int *hcell ));
  768.   
  769.   /*
  770. !  * Inquire outline font text advance placement vector.
  771.    */
  772.   __EXTERN void    vqt_advance __PROTO(( int handle, int ch, int *xadv,
  773.                        int *yadv, int *xrem, int *yrem)); 
  774. + __EXTERN void   vqt_advance32 __PROTO((int handle, int ch, long *advx,
  775. +                                        long *advy));
  776.   
  777.   /*
  778.    * Inquire device status information.
  779. ***************
  780. *** 380,385 ****
  781. --- 383,390 ----
  782.    */
  783.   __EXTERN int    vst_setsize __PROTO(( int handle, int point, int *wchar,
  784.                        int *hchar, int *wcell, int *hcell ));
  785. + __EXTERN long    vst_setsize32 __PROTO(( int handle, long point, int *wchar,
  786. +                      int *hchar, int *wcell, int *hcell ));
  787.   
  788.   /*
  789.    * Set FSM skew.
  790. ***************
  791. *** 389,402 ****
  792.   /*
  793.    * Get FSM GASCII tables.
  794.    */
  795.   __EXTERN void    vqt_get_tables __PROTO(( int handle, void **gascii,
  796.                       void **style ));
  797.   
  798.   /* 
  799. !  * Get FSM cashe size
  800.    */
  801.   __EXTERN void    vqt_cachesize __PROTO(( int handle, int which_cache,
  802.                          size_t *size ));
  803.   
  804.   /*
  805.    * bezier curves stuff
  806. --- 394,437 ----
  807.   /*
  808.    * Get FSM GASCII tables.
  809.    */
  810. + __EXTERN void   vqt_get_table __PROTO((int handle, short **map));
  811. + #if 0 /* old FSMgdos binding */
  812.   __EXTERN void    vqt_get_tables __PROTO(( int handle, void **gascii,
  813.                       void **style ));
  814. + #endif
  815.   
  816.   /* 
  817. !  * Get FSM cache size
  818.    */
  819.   __EXTERN void    vqt_cachesize __PROTO(( int handle, int which_cache,
  820.                          size_t *size ));
  821. + /*
  822. +  * Set Character Mapping Mode
  823. +  */
  824. + __EXTERN void vst_charmap __PROTO((int handle, int mode));
  825. + /*
  826. +  * Set Kerning Mode
  827. +  */
  828. + __EXTERN void vst_kern __PROTO((int handle, int tmode, int pmode, int *tracks,
  829. +                                 int *pairs));
  830. + /*
  831. +  * Inq Speedo Header
  832. +  */
  833. + __EXTERN void vqt_fontheader __PROTO((int handle, char *buffer, char
  834. +                                       *pathname));
  835. + /*
  836. +  * Inq track kerning info
  837. +  */
  838. + __EXTERN void vqt_trackkern __PROTO((int handle, long *x, long *y));
  839. + /*
  840. +  * Inq pair kerning info
  841. +  */
  842. + __EXTERN void vqt_pairkern __PROTO((int handle, int ch1, int ch2, long *x, long
  843. +                                     *y));
  844.   
  845.   /*
  846.    * bezier curves stuff
  847. ===================================================================
  848. RCS file: /net/acae127/home/bammi/etc/src/master/atari/gemlib/vdifsm.c,v
  849. retrieving revision 1.5
  850. diff -c -r1.5 vdifsm.c
  851. *** 1.5    1992/01/14 19:33:03
  852. --- vdifsm.c    1993/02/22 06:07:49
  853. ***************
  854. *** 1,8 ****
  855.   /*
  856. !  * FSM gdos bindings
  857.    * this file has some relationship to a file supplied by Atari
  858.    * but it changed quite a bit (among other things it appears to work).
  859.    * v_shtext survived verbatim from the original.
  860.    */
  861.   
  862.   #include "common.h"
  863. --- 1,13 ----
  864.   /*
  865. !  * FSM/SpeedoGDOS  gdos bindings
  866.    * this file has some relationship to a file supplied by Atari
  867.    * but it changed quite a bit (among other things it appears to work).
  868.    * v_shtext survived verbatim from the original.
  869. +  *
  870. +  * ++jrb add more speedoGDOS stuff. now it looks nothing like the one
  871. +  *       from atari. i guess this file should now be called vdispeedo or
  872. +  *       something like that. btw: atari claims that the api did'nt change
  873. +  *       yeah right!
  874.    */
  875.   
  876.   #include "common.h"
  877. ***************
  878. *** 11,105 ****
  879.   #endif
  880.   #include <types.h>
  881.   
  882. - /* FSMBIND functions
  883. -  * ======================================================================
  884. -  */
  885.   #ifdef __DEF_ALL__
  886.   
  887. - #define L_v_getbit
  888.   #define L_vqt_fext
  889.   #define L_v_ftext
  890. ! #define L_v_killou
  891.   #define L_v_getout
  892.   #define L_vst_scra
  893.   #define L_vst_erro
  894.   #define L_v_shtext
  895.   #define L_vst_arbp
  896.   #define L_vqt_adva
  897.   #define L_vqt_devi
  898.   #define L_v_saveca
  899.   #define L_v_loadca
  900.   #define L_v_flushc
  901.   #define L_vst_sets
  902.   #define L_vst_skew
  903.   #define L_vqt_get_
  904.   #define L_vqt_cach
  905.   
  906.   #endif /* __DEF_ALL__ */
  907.   
  908. - #ifdef L_v_getbit
  909. - /* ---------------------------------------------------------------------------
  910. -  * Retrieve placement information for FSM generated characters
  911. -  * Information is placed in infoarray of 52 ints.
  912. -  * Borrow a soothsayer from DRI or Atari to find its meaning.
  913. -  *
  914. -  * This is a temporary bindings since one genius decided
  915. -  * that some entries in infoarray will represent real numbers.
  916. -  * You may fully expect that that this representation of reals is
  917. -  * absolutely different from what your compiler is using.
  918. -  * Count your lucky stars if at least sizeof(double) == 2 * sizeof(int).
  919. -  * Or maybe sizeof(double) is supposed to be sizeof(float)?
  920. -  */
  921. - void
  922. - v_getbitmap_info(int handle, int ch, int infoarray[52])
  923. - {
  924. -     short *ptr = _intin;
  925. -     *ptr++ = ch;
  926. -     *(int **)ptr = &infoarray[0];
  927. -     __vdi__(VDI_CONTRL_ENCODE(239, 0, 3, 0), handle);
  928. - #ifndef __MSHORT__
  929. -     /* Repack returned information from an array of shorts into an
  930. -        array of ints */
  931. -     { /* dummy block to contain new declarations */
  932. -     short *s_ptr = (short *)(&infoarray[0]) + 52;
  933. -     short *bot   = (short *)(&infoarray[0]) +  4;
  934. -     int   *i_ptr = (&infoarray[0]) + 52;
  935. -     do {
  936. -         s_ptr -= 2;              /* copy y-offset */
  937. -         *(--i_ptr) = *(int *)s_ptr;
  938. -         *(--i_ptr) = 0;
  939. -     
  940. -         s_ptr -= 2;              /* copy x-offset */
  941. -         *(--i_ptr) = *(int *)s_ptr;
  942. -         *(--i_ptr) = 0;
  943. -         
  944. -         *(--i_ptr) = *(--s_ptr);  /* bitmap height */
  945. -         *(--i_ptr) = *(--s_ptr);  /* bitmap width  */
  946. -     } while (s_ptr > bot);
  947. -     *(--i_ptr) = *(--s_ptr);      /* remainder y-advance */
  948. -     *(--i_ptr) = *(--s_ptr);      /* y-advance */
  949. -     *(--i_ptr) = *(--s_ptr);      /* remainder x-advance */
  950. -     *i_ptr     = *s_ptr;          /* x-advance */
  951. -     }
  952. - #endif /* __MSHORT__ */
  953. - }
  954. - #endif /* L_v_getbit */
  955.   #ifdef L_vqt_fext
  956.   
  957. ! /* ---------------------------------------------------------------------------
  958. !  * Inquire text extent, accounting for FSM text placement
  959.    */
  960. ! void
  961. ! vqt_f_extent(int handle, const char *str, int extent[8])
  962.   {
  963.       unsigned char ch;
  964.       short *ptr;
  965. --- 16,59 ----
  966.   #endif
  967.   #include <types.h>
  968.   
  969.   #ifdef __DEF_ALL__
  970.   
  971.   #define L_vqt_fext
  972.   #define L_v_ftext
  973. ! #define L_v_fteof
  974.   #define L_v_getout
  975.   #define L_vst_scra
  976.   #define L_vst_erro
  977.   #define L_v_shtext
  978.   #define L_vst_arbp
  979. + #define L_vst_ar32
  980.   #define L_vqt_adva
  981. + #define L_vqt_ad32
  982.   #define L_vqt_devi
  983.   #define L_v_saveca
  984.   #define L_v_loadca
  985.   #define L_v_flushc
  986.   #define L_vst_sets
  987. + #define L_vst_se32
  988.   #define L_vst_skew
  989.   #define L_vqt_get_
  990.   #define L_vqt_cach
  991. + #define L_vst_char
  992. + #define L_vst_kern
  993. + #define L_vqt_fnt
  994. + #define L_vqt_trac
  995. + #define L_vqt_pair
  996. + #define L_v_getbit
  997.   
  998.   #endif /* __DEF_ALL__ */
  999.   
  1000.   #ifdef L_vqt_fext
  1001.   
  1002. ! /* Inquire Outline Font Text Extent. This function works exactly like
  1003. !  * vqt_extent(), but the rectangle returned will account for the remainder
  1004. !  * values of vqt_advance() and kerning.
  1005.    */
  1006. ! void vqt_f_extent(int handle, const char *str, int extent[8])
  1007.   {
  1008.       unsigned char ch;
  1009.       short *ptr;
  1010. ***************
  1011. *** 124,131 ****
  1012.   
  1013.   #ifdef L_v_ftext
  1014.   
  1015. ! /* ---------------------------------------------------------------------------
  1016. !  * Draw FSM text (accounts for fractional advances in rotated text)
  1017.    */
  1018.   void
  1019.   v_ftext(int handle, int x, int y, const char *str)
  1020. --- 78,92 ----
  1021.   
  1022.   #ifdef L_v_ftext
  1023.   
  1024. ! /* Outline Font Text. This function works exactly like v_gtext(), but the text
  1025. !  * returned will account for the remainder values of vqt_advance().  In other
  1026. !  * words, the text spacing will be more accurate. In addition, for applications
  1027. !  * that want more control over character placement, v_ftext() will take a
  1028. !  * custom set of offset vectors, one for each character in the string
  1029. !  * (including the last one for underlining calculations).  Each vector must  
  1030. !  * consist of a pair of 16-bit values that will be used in place of a
  1031. !  * character's advance vector when outputting text.  A second binding follows
  1032. !  * the original. 
  1033.    */
  1034.   void
  1035.   v_ftext(int handle, int x, int y, const char *str)
  1036. ***************
  1037. *** 144,173 ****
  1038.   
  1039.   #endif /* L_v_ftext */
  1040.   
  1041. ! #ifdef L_v_killou
  1042. ! /* ---------------------------------------------------------------------------
  1043. !  * Release memory associated with outline component generated by v_getoutline()
  1044. !  */
  1045. ! void
  1046. ! v_killoutline(int handle, void *component)
  1047.   {
  1048. !     *(void **)&_intin[0] =  component;
  1049. !     __vdi__(VDI_CONTRL_ENCODE(242, 0, 2, 0), handle);
  1050.   }
  1051.   #endif /* L_v_killou */
  1052.   
  1053.   
  1054.   #ifdef L_v_getout
  1055. ! /* ---------------------------------------------------------------------------
  1056. !  * Generate an outline for character ch, and return the address of the outline.
  1057.    */
  1058. ! void
  1059. ! v_getoutline(int handle, int ch, void **component)
  1060.   {
  1061.       _intin[0] = ch;
  1062. !     *(void ***)&_intin[1] = component;
  1063. !     __vdi__(VDI_CONTRL_ENCODE(243, 0, 3, 0), handle);
  1064.   }
  1065.   
  1066.   #endif /* L_v_getout */
  1067. --- 105,160 ----
  1068.   
  1069.   #endif /* L_v_ftext */
  1070.   
  1071. ! #ifdef L_v_fteof
  1072. ! void v_ftext_offset(int handle, int x, int y, const char *str, int *offset)
  1073.   {
  1074. !     unsigned char   ch;
  1075. !     short *ptr = _intin;
  1076. !     int n = 0;
  1077. !     
  1078. !     _ptsin[0] = x;
  1079. !     _ptsin[1] = y;
  1080. !     while ( ch  = (unsigned const char) *str++) 
  1081. !     {
  1082. !     *ptr++ = ch;
  1083. !         n++;
  1084. !     }
  1085. !     *ptr = 0;
  1086. !     ptr = &_ptsin[2];
  1087. !     for(n *= 2; n > 0; n--)
  1088. !     {
  1089. !         *ptr++ = *offset++;
  1090. !     }
  1091. !     
  1092. !     __vdi__(VDI_CONTRL_ENCODE(241, 1, (int)(ptr - _intin), 0), handle);
  1093.   }
  1094. + #endif /* L_v_fteof */
  1095. + #ifdef  L_v_killou
  1096. + #error v_killoutline(int handle, void *component) doesnt exist any more
  1097.   #endif /* L_v_killou */
  1098.   
  1099.   
  1100.   #ifdef L_v_getout
  1101. ! /* Generate an outline for character ch, and return the bezier representation
  1102. !  * in the buffer provided.
  1103.    */
  1104. ! void v_getoutline(int handle, int ch, int *xyarray, char *bezarray,
  1105. !                   int maxverts, int *numverts)
  1106.   {
  1107. +     int **addr;
  1108. +     
  1109.       _intin[0] = ch;
  1110. !     _intin[1] = maxverts;
  1111. !     addr = (int **)(&_intin[2]);
  1112. !     *addr++ = xyarray;
  1113. !     *addr = (int *)bezarray;
  1114. !     __vdi__(VDI_CONTRL_ENCODE(243, 0, 6, 0), handle);
  1115. !     *numverts = _intout[0];
  1116.   }
  1117.   
  1118.   #endif /* L_v_getout */
  1119. ***************
  1120. *** 174,188 ****
  1121.   
  1122.   
  1123.   #ifdef L_vst_scra
  1124. ! /* ---------------------------------------------------------------------------
  1125. !  * Set scratch buffer allocation mode.
  1126.    * This buffes is used when creating special effects on fonts.
  1127.    * mode=0: (default) account for FSM fonts when allocating scratch buffers
  1128.    * mode=1: account only for BM fonts;  no special effects for outlines
  1129.    * mode=2: allocate no scratch buffer; no special effects at all
  1130.    */
  1131. ! void
  1132. ! vst_scratch(int handle, int mode)
  1133.   {
  1134.       _intin[0] = mode;
  1135.       __vdi__(VDI_CONTRL_ENCODE(244, 0, 1, 0), handle);
  1136. --- 161,174 ----
  1137.   
  1138.   
  1139.   #ifdef L_vst_scra
  1140. ! /* Set scratch buffer allocation mode.
  1141.    * This buffes is used when creating special effects on fonts.
  1142.    * mode=0: (default) account for FSM fonts when allocating scratch buffers
  1143.    * mode=1: account only for BM fonts;  no special effects for outlines
  1144.    * mode=2: allocate no scratch buffer; no special effects at all
  1145.    */
  1146. ! void vst_scratch(int handle, int mode)
  1147.   {
  1148.       _intin[0] = mode;
  1149.       __vdi__(VDI_CONTRL_ENCODE(244, 0, 1, 0), handle);
  1150. ***************
  1151. *** 193,209 ****
  1152.   
  1153.   #ifdef L_vst_erro
  1154.   
  1155. ! /* ---------------------------------------------------------------------------
  1156. !  * Set FSM error mode.
  1157.    * mode=1: (default) errors go to screen.
  1158.    * mode=0: errors reported in error variable `errorvar'.
  1159.    */
  1160. ! void
  1161. ! vst_error(int handle, int mode, int *errorvar)
  1162.   {
  1163.       _intin[0] = mode;
  1164. !     *(int **)&_intin[1] = errorvar;
  1165.       __vdi__(VDI_CONTRL_ENCODE(245, 0, 3, 0), handle);
  1166.   }
  1167.   
  1168.   #endif /* L_vst_erro */
  1169. --- 179,196 ----
  1170.   
  1171.   #ifdef L_vst_erro
  1172.   
  1173. ! /* Set FSM error mode.
  1174.    * mode=1: (default) errors go to screen.
  1175.    * mode=0: errors reported in error variable `errorvar'.
  1176.    */
  1177. ! void vst_error(int handle, int mode, int *errorvar)
  1178.   {
  1179. +     short errv;
  1180. +     
  1181.       _intin[0] = mode;
  1182. !     *(short **)&_intin[1] = &errv;
  1183.       __vdi__(VDI_CONTRL_ENCODE(245, 0, 3, 0), handle);
  1184. +     *errorvar = errv;
  1185.   }
  1186.   
  1187.   #endif /* L_vst_erro */
  1188. ***************
  1189. *** 211,224 ****
  1190.   
  1191.   #ifdef L_v_shtext
  1192.   
  1193. ! /* ----------------------------------------------------------------------
  1194. !  * v_gtext with shadow.
  1195.    * Text color should be set to `color' before calling.
  1196.    * This is not technically an FSM binding,
  1197.    * but this module is a convenient place for it.
  1198.    */
  1199. ! void
  1200. ! v_shtext( int wsid, 
  1201.         int x,
  1202.         int y,
  1203.         const char * text,
  1204. --- 198,209 ----
  1205.   
  1206.   #ifdef L_v_shtext
  1207.   
  1208. ! /* v_gtext with shadow.
  1209.    * Text color should be set to `color' before calling.
  1210.    * This is not technically an FSM binding,
  1211.    * but this module is a convenient place for it.
  1212.    */
  1213. ! void v_shtext( int wsid, 
  1214.         int x,
  1215.         int y,
  1216.         const char * text,
  1217. ***************
  1218. *** 243,256 ****
  1219.   
  1220.   #ifdef L_vst_arbp
  1221.   
  1222. ! /* ----------------------------------------------------------------------
  1223. !  * Set character cell height to arbitrary value.
  1224.    * Height is given in printer points (more or less) and it does not
  1225.    * have to be listed in extend.sys.
  1226.    * Only for FSM outline fonts.
  1227.    */
  1228. ! int
  1229. ! vst_arbpt( int handle,
  1230.          int point,
  1231.          int *wchar,
  1232.          int *hchar,
  1233. --- 228,239 ----
  1234.   
  1235.   #ifdef L_vst_arbp
  1236.   
  1237. ! /* Set character cell height to arbitrary value.
  1238.    * Height is given in printer points (more or less) and it does not
  1239.    * have to be listed in extend.sys.
  1240.    * Only for FSM outline fonts.
  1241.    */
  1242. ! int vst_arbpt( int handle,
  1243.          int point,
  1244.          int *wchar,
  1245.          int *hchar,
  1246. ***************
  1247. *** 270,283 ****
  1248.   }
  1249.   #endif /* L_vst_arbp */
  1250.   
  1251.   #ifdef L_vqt_adva
  1252.   
  1253. ! /* ----------------------------------------------------------------------
  1254. !  * Inquire FSM text advance placement vector.
  1255. !  * Remainders xrem and yrem are modulo 16384 (2^14, 1 << 14)
  1256.    */
  1257. ! void
  1258. ! vqt_advance( int handle, int ch, int *xadv, int *yadv, int *xrem, int *yrem)
  1259.   {
  1260.       short    *outp = &_ptsout[0];
  1261.   
  1262. --- 253,297 ----
  1263.   }
  1264.   #endif /* L_vst_arbp */
  1265.   
  1266. + #ifdef L_vst_ar32
  1267. + /* fix32 version */
  1268. + long vst_arbpt32( int handle,
  1269. +        long point,
  1270. +        int *wchar,
  1271. +        int *hchar,
  1272. +        int *wcell,
  1273. +        int *hcell )
  1274. + {
  1275. +     short    *outp = &_ptsout[0];
  1276. +     *((long *)(&_intin[0])) = point;
  1277. +     __vdi__(VDI_CONTRL_ENCODE(246, 0, 2, 0), handle);
  1278. +     *wchar = *outp++;
  1279. +     *hchar = *outp++;
  1280. +     *wcell = *outp++;
  1281. +     *hcell = *outp;
  1282. +     return *((long *)(&_intout[0]));
  1283. + }
  1284. + #endif /* L_vst_ar32 */
  1285.   #ifdef L_vqt_adva
  1286.   
  1287. ! /* Inquire Outline Font Text Advance Placement Vector
  1288. !  * This function returns the x and y offsets which are needed to  place the
  1289. !  * next character of a string in the proper position.  This call is necessary
  1290. !  * when laying down text at rotations other than 0, 90,  and 270.  In addition,
  1291. !  * the call returns remainder values for the x and y offsets (mod 16000), so
  1292. !  * that cursor placement can be calculated for v_ftext() and vqt_f_extent().
  1293. !  *
  1294. !  * In addition, this call also returns values in units of 1/65536 pixels (fix31
  1295. !  * format).  The new binding for vqt_advance32() follows, and atari encourages
  1296. !  * programmers to use the new data type.
  1297. !  *
  1298.    */
  1299. ! void vqt_advance(int handle, int ch, int *xadv, int *yadv, int *xrem,
  1300. !                  int *yrem) 
  1301.   {
  1302.       short    *outp = &_ptsout[0];
  1303.   
  1304. ***************
  1305. *** 290,306 ****
  1306.   }
  1307.   #endif /* L_vqt_adva */
  1308.   
  1309.   #ifdef L_vqt_devi
  1310.   
  1311. ! /* ----------------------------------------------------------------------
  1312. !  * Inquire device status information.
  1313. !  * 
  1314. !  * Watch out!  Name is returned as a COUNTED string in 8+3 format,
  1315. !  * without separator, all in an upper case.  Missing character
  1316. !  * positions are filled with blanks.
  1317. !  * (At least this was the case for some versions of FSMGDOS.
  1318. !  * Who knows what will happen next.  This is NOT documented.
  1319. !  * Check before you jump!)
  1320.    */
  1321.   void
  1322.   vqt_devinfo( int handle, int device, int *isdev, char *drivername )
  1323. --- 304,330 ----
  1324.   }
  1325.   #endif /* L_vqt_adva */
  1326.   
  1327. + #ifdef L_vqt_ad32
  1328. + /* new binding. returns results in fix31 (1/64k pixels) types.
  1329. +  */
  1330. + void vqt_advance32(int handle, int ch, long *advx, long *advy)
  1331. + {
  1332. +     long *outp = (long *)(&_ptsout[4]);
  1333. +     _intin[0] = ch;
  1334. +     __vdi__(VDI_CONTRL_ENCODE(247, 0, 1, 0), handle);
  1335. +     *advx = *outp++;
  1336. +     *advy = *outp;
  1337. + }
  1338. + #endif /* L_vqt_ad32 */
  1339.   #ifdef L_vqt_devi
  1340.   
  1341. ! /* Inquire device status information.
  1342. !  * This function takes a device id number as a parameter and reports back to
  1343. !  * the application whether or not the driver for that device has been installed
  1344. !  * by gdos. If the driver has been installed, the name of the driver is
  1345. !  * returned to the application.
  1346.    */
  1347.   void
  1348.   vqt_devinfo( int handle, int device, int *isdev, char *drivername )
  1349. ***************
  1350. *** 322,329 ****
  1351.   
  1352.   #ifdef L_v_saveca
  1353.   
  1354. ! /* ----------------------------------------------------------------------
  1355. !  * Save FSM cache to disk.
  1356.    */
  1357.   int
  1358.   v_savecache( int handle, char *filename )
  1359. --- 346,352 ----
  1360.   
  1361.   #ifdef L_v_saveca
  1362.   
  1363. ! /* Save outline font cache to disk.
  1364.    */
  1365.   int
  1366.   v_savecache( int handle, char *filename )
  1367. ***************
  1368. *** 340,347 ****
  1369.   
  1370.   #ifdef L_v_loadca
  1371.   
  1372. ! /* ----------------------------------------------------------------------
  1373. !  * Load/merge FSM cache from disk.
  1374.    */
  1375.   int
  1376.   v_loadcache( int handle, char *filename, int mode )
  1377. --- 363,372 ----
  1378.   
  1379.   #ifdef L_v_loadca
  1380.   
  1381. ! /* Load/merge outline font cache from disk.
  1382. !  * mode = 0 - append
  1383. !  *      = 1 - flush and load anew
  1384. !  * returns 0 or -1 if error
  1385.    */
  1386.   int
  1387.   v_loadcache( int handle, char *filename, int mode )
  1388. ***************
  1389. *** 359,369 ****
  1390.   
  1391.   #ifdef L_v_flushc
  1392.   
  1393. ! /* ----------------------------------------------------------------------
  1394. !  * Flush FSM cache.
  1395.    */
  1396. ! int
  1397. ! v_flushcache( int handle )
  1398.   {
  1399.       __vdi__(VDI_CONTRL_ENCODE(251, 0, 0, 0), handle);
  1400.   
  1401. --- 384,393 ----
  1402.   
  1403.   #ifdef L_v_flushc
  1404.   
  1405. ! /* Flush outline font cache.
  1406. !  * return 0 or -1 on error.
  1407.    */
  1408. ! int v_flushcache( int handle )
  1409.   {
  1410.       __vdi__(VDI_CONTRL_ENCODE(251, 0, 0, 0), handle);
  1411.   
  1412. ***************
  1413. *** 373,386 ****
  1414.   
  1415.   #ifdef L_vst_sets
  1416.   
  1417. ! /* ----------------------------------------------------------------------
  1418. !  * Set character cell width (set size) to arbitrary value.
  1419. !  * Width is given in printer points (more or less).
  1420. !  * Only for FSM outline fonts.
  1421. !  * Effects are cancelled by calls to vst_point, vst_arbpt or vst_height.
  1422.    */
  1423. ! int
  1424. ! vst_setsize( int handle,
  1425.            int point,
  1426.            int *wchar,
  1427.            int *hchar,
  1428. --- 397,412 ----
  1429.   
  1430.   #ifdef L_vst_sets
  1431.   
  1432. ! /* Set Character Cell Width by Arbitrary Points. This function sets the current
  1433. !  * graphic text character width (set size) in printer points.  An arbitrary set
  1434. !  * size may be entered to represent the character width.  It should be noted
  1435. !  * that the next call to vst_point, vst_arbpt or vst_height will cancel out
  1436. !  * this call and  will set the set size to be equal to the requested point
  1437. !  * size. This call will only work with outline fonts.  The set size may be
  1438. !  * specified in either 16-bit integer format or 32-bit fix31 format (units of
  1439. !  * 1/65536 points). 
  1440.    */
  1441. ! int vst_setsize( int handle,
  1442.            int point,
  1443.            int *wchar,
  1444.            int *hchar,
  1445. ***************
  1446. *** 401,414 ****
  1447.   }
  1448.   #endif /* L_vst_sets */
  1449.   
  1450.   #ifdef L_vst_skew
  1451.   
  1452. ! /* ----------------------------------------------------------------------
  1453. !  * Set FSM skew.
  1454. !  * Skew in tenths of degrees.  Valid values between -900 and 900.
  1455.    */
  1456. ! int
  1457. ! vst_skew( int handle, int skew )
  1458.   {
  1459.       _intin[0] = skew;
  1460.       __vdi__(VDI_CONTRL_ENCODE(253, 0, 1, 0), handle);
  1461. --- 427,464 ----
  1462.   }
  1463.   #endif /* L_vst_sets */
  1464.   
  1465. + #ifdef L_vst_se32
  1466. + /* new fix31 version
  1467. +  */
  1468. + long vst_setsize32( int handle,
  1469. +          long point,
  1470. +          int *wchar,
  1471. +          int *hchar,
  1472. +          int *wcell,
  1473. +          int *hcell )
  1474. + {
  1475. +     short *outp = &_ptsout[0];
  1476. +     
  1477. +     *((long *)(&_intin[0])) = point;
  1478. +     __vdi__(VDI_CONTRL_ENCODE(252, 0, 2, 0), handle);
  1479. +     *wchar = *outp++;
  1480. +     *hchar = *outp++;
  1481. +     *wcell = *outp++;
  1482. +     *hcell = *outp;
  1483. +     return *((long *)(&_intout[0]));
  1484. + }
  1485. + #endif /* L_vst_se32 */
  1486.   #ifdef L_vst_skew
  1487.   
  1488. ! /* Set FSM skew. (only works with outline fonts)
  1489. !  * Skew in tenths of degrees.  Valid values between -900 and 900. (-ve to left)
  1490.    */
  1491. ! int vst_skew( int handle, int skew )
  1492.   {
  1493.       _intin[0] = skew;
  1494.       __vdi__(VDI_CONTRL_ENCODE(253, 0, 1, 0), handle);
  1495. ***************
  1496. *** 419,424 ****
  1497. --- 469,499 ----
  1498.   
  1499.   #ifdef L_vqt_get_
  1500.   
  1501. + /* Get Character Mapping Table. This call returns the address of a series of
  1502. +  * contiguous tables used internally by  SpeedoGDOS.  The tables are used to
  1503. +  * map the Atari character set to the equivalent Bitstream character indexes.
  1504. +  * Depending on the font file, a Speedo font's indexes have six different
  1505. +  * formats: the Bitstream International Character Set, the Bitstream
  1506. +  * International Symbol Set, the Bitstream Dingbats Set, the PostScript text
  1507. +  * set, the PostScript symbol set, and the PostScript Dingbats set.  There are
  1508. +  * a total of seven tables which map the Atari character set to Bitstream
  1509. +  * character indexes, one master mapping, and one table for each of the
  1510. +  * aforementioned character sets (in the order presented).  Applications can
  1511. +  * find out which character set corresponds to the current font by checking the
  1512. +  * Speedo font file header. Each individual table contains 224  word-sized
  1513. +  * entries with the first entry being the translation for character 32, the
  1514. +  * second for character 33....etc.  Therefore, with the address of the table,
  1515. +  * applications can change the mappings so that any Bitstream character index
  1516. +  * may be substituted.
  1517. +  */
  1518. + void vqt_get_table(int handle, short **map)
  1519. + {
  1520. +     __vdi__(VDI_CONTRL_ENCODE(254, 0, 0, 0), handle);
  1521. +     *map = *((short **)(&_intout[0]));
  1522. + }
  1523. + #if 0 /* old fsm binding */
  1524.   /* ----------------------------------------------------------------------
  1525.    * Get FSM GASCII tables.
  1526.    */
  1527. ***************
  1528. *** 429,448 ****
  1529.       *gascii = *(void **)&_intout[0];
  1530.       *style =  *(void **)&_intout[2];
  1531.   }
  1532.   #endif /* L_vqt_get_ */
  1533.   
  1534.   #ifdef L_vqt_cach
  1535.   
  1536. ! /* ----------------------------------------------------------------------
  1537. !  * Get FSM cashe size
  1538.    */
  1539. ! void
  1540. ! vqt_cachesize( int handle, int which_cache, size_t *size )
  1541.   {
  1542.       _intin[0] = which_cache;
  1543.       __vdi__(VDI_CONTRL_ENCODE(255, 0, 1, 0), handle);
  1544. !     *size = *(size_t *)&_intout[0];
  1545.   }
  1546.   #endif /* L_vqt_cach */
  1547.   
  1548.   /* -eof- */
  1549. --- 504,649 ----
  1550.       *gascii = *(void **)&_intout[0];
  1551.       *style =  *(void **)&_intout[2];
  1552.   }
  1553. + #endif
  1554.   #endif /* L_vqt_get_ */
  1555.   
  1556.   #ifdef L_vqt_cach
  1557.   
  1558. ! /* Get Outline Font Cache Size. Returns the largest block size available in
  1559. !  * each of the two fsm caches.  This call can be used to estimate how big a
  1560. !  * character SpeedoGDOS can handle when it prints a character.  A zero (0) in
  1561. !  * which_cache will instruct SpeedoGDOS to return the largest allocatable block
  1562. !  * in the character bitmap cache.  A one (1) will return the same information
  1563. !  * for the data structure cache.
  1564.    */
  1565. ! void vqt_cachesize( int handle, int which_cache, size_t *size )
  1566.   {
  1567.       _intin[0] = which_cache;
  1568.       __vdi__(VDI_CONTRL_ENCODE(255, 0, 1, 0), handle);
  1569. !     *size = *((size_t *)(&_intout[0]));
  1570.   }
  1571.   #endif /* L_vqt_cach */
  1572. + #ifdef L_vst_char
  1573. + /* Set Character Mapping Mode. This function allows the application to switch
  1574. +  * from using the Atari character set to the BICS character set.  The
  1575. +  * vst_charmap() function will set a flag so that all subsequent calls to text
  1576. +  * calls will use words that are equivalent to Bitstream character indexes
  1577. +  * instead of Atari ASCII bytes. 
  1578. +  */
  1579. + void vst_charmap(int handle, int mode)
  1580. + {
  1581. +     _intin[0] = mode;
  1582. +     __vdi__(VDI_CONTRL_ENCODE(236, 0, 1, 0), handle);
  1583. + }    
  1584. + #endif /* L_vst_char */
  1585. + #ifdef L_vst_kern
  1586. + /* Set Kerning Mode. This function allows the application to set the different
  1587. +  * kerning modes.  Track kerning can have 0-3 tracks:  0 is no kerning, 1 is
  1588. +  * normal, 2 is tight, and 3 is very tight.  The vst_kern() function passes in
  1589. +  * a track kern value and it returns the track to which the current font is
  1590. +  * set.  Pair kerning is set to be on or off. The vst_kern() function will
  1591. +  * return 0 if there is no track kerning or a number greater than 0 to indicate
  1592. +  * that pair kerning is on; that number is the number of kerning pairs in the
  1593. +  * font. 
  1594. +  */
  1595. + void vst_kern(int handle, int tmode, int pmode, int *tracks, int *pairs)
  1596. + {
  1597. +     _intin[0] = tmode;
  1598. +     _intin[1] = pmode;
  1599. +     __vdi__(VDI_CONTRL_ENCODE(237, 0, 2, 0), handle);
  1600. +     *tracks = _intout[0];
  1601. +     *pairs  = _intout[1];
  1602. + }    
  1603. + #endif /* L_vst_kern */
  1604. + #ifdef L_vqt_fnt
  1605. + /* Inquire Speedo Font Header Information. This function copies the current 
  1606. +  * font's Speedo font header into a buffer and returns the full path name for
  1607. +  * the corresponding TDF file.  Note that the buffer must be at least 421
  1608. +  * bytes.  See (nonexistant!) Bitstream documentation for specific font header
  1609. +  * information.  
  1610. +  */
  1611. + void vqt_fontheader(int handle, char *buffer, char *pathname)
  1612. + {
  1613. +     short *ptr;
  1614. +     int n;
  1615. +     
  1616. +     *((char **)(&_intin[0])) = buffer;
  1617. +     __vdi__(VDI_CONTRL_ENCODE(232, 0, 2, 0), handle);
  1618. +     
  1619. +     for(ptr = &_intout[0], n = _contrl[4]; n > 0; n--)
  1620. +         *pathname++ = *ptr++;
  1621. + }    
  1622. + #endif /* L_vqt_fnt */
  1623. + #ifdef L_vqt_trac
  1624. + /* Inquire Track Kerning Information. This function allows the application to
  1625. +  * inquire the adjustment vector for track kerning.  The vqt_trackkern()
  1626. +  * function returns the vector (x-direction and  y-direction) that indicates
  1627. +  * the spacing adjustment made between characters. 
  1628. +  */
  1629. + void vqt_trackkern(int handle, long *x, long *y)
  1630. + {
  1631. +     __vdi__(VDI_CONTRL_ENCODE(234, 0, 0, 0), handle);
  1632. +     *x = *((long *)(&_ptsout[0]));
  1633. +     *y = *((long *)(&_ptsout[2]));
  1634. + }
  1635. + #endif /* L_vqt_trac */
  1636. + #ifdef L_vqt_pair
  1637. + /* Inquire Pair Kerning Information. This function allows the application to
  1638. +  * inquire the adjustment vector for pair kerning.  The vqt_pairkern() function
  1639. +  * returns the vector (x-direction and y-direction) that indicates the spacing
  1640. +  * adjustment made between the character pair specified.
  1641. +  */
  1642. + void vqt_pairkern(int handle, int ch1, int ch2, long *x, long *y)
  1643. + {
  1644. +     _intin[0] = ch1;
  1645. +     _intin[1] = ch2;
  1646. +     /* atari doc is wrong about contrl[3] */
  1647. +     __vdi__(VDI_CONTRL_ENCODE(235, 0, 2, 0), handle);
  1648. +     *x = *((long *)(&_ptsout[0]));
  1649. +     *y = *((long *)(&_ptsout[2]));
  1650. + }
  1651. + #endif /* L_vqt_pair */
  1652. + #ifdef L_v_getbit
  1653. + /* Get Character Bitmap Information. This call provides information to allow
  1654. +  * the caller to know the exact size and placement of a given character.  This
  1655. +  * information includes the character's x and y advance vectors, the x and y
  1656. +  * offsets, and the bitmap dimensions of the character. The advance vector
  1657. +  * represents the amount to add to the current point to place the following
  1658. +  * character.  The x and y offsets, when added to the current point, give the
  1659. +  * caller the location of the upper left hand corner of the bitmap.  The width
  1660. +  * and height of the bitmap are returned as 16 bit integers.  All other values
  1661. +  * are returned in fix31 representation.
  1662. +  */
  1663. + void v_getbitmap_info(int handle,
  1664. +                       int ch, 
  1665. +                       long *advancex, long *advancey,
  1666. +                       long *xoffset, long *yoffset,
  1667. +                       int *width, int *height,
  1668. +                       short **bitmap)
  1669. + {
  1670. +     _intin[0] = ch;
  1671. +     __vdi__(VDI_CONTRL_ENCODE(239, 0, 1, 0), handle);
  1672. +     *width = _intout[0];
  1673. +     *height = _intout[1];
  1674. +     *advancex = *((long *)(&_intout[2]));
  1675. +     *advancey = *((long *)(&_intout[4]));
  1676. +     *xoffset = *((long *)(&_intout[6]));
  1677. +     *yoffset = *((long *)(&_intout[8]));
  1678. +     *bitmap = *((short **)(&_intout[10]));
  1679. + }
  1680. + #endif /* L_v_getbit */
  1681.   
  1682.   /* -eof- */
  1683. ===================================================================
  1684. RCS file: /net/acae127/home/bammi/etc/src/master/atari/gemlib/vdiinq.c,v
  1685. retrieving revision 1.9
  1686. diff -c -r1.9 vdiinq.c
  1687. *** 1.9    1992/01/29 19:04:38
  1688. --- vdiinq.c    1993/02/22 06:07:50
  1689. ***************
  1690. *** 25,31 ****
  1691. --- 25,41 ----
  1692.    *    your program was allocating this extra byte anyway for a
  1693.    *    terminating null, but it may kill you if this space was tight!
  1694.    *    THIS IS NOT OFFICIAL yet and it may change!!!
  1695. +  *
  1696. +  *******
  1697. +  *
  1698. +  *      This is official now (jan 93 SpeedoGDOS docs from atari).
  1699. +  *      To quote the doc "A new parameter has been added to this function.
  1700. +  *      It is a flag that indicates whether or not the font in question is
  1701. +  *      an outline font or bitmap font.  The flag will be contained in
  1702. +  *      intin[33]; 0 will signify a bitmap font, and 1 will indicate an 
  1703. +  *      outline font."
  1704.    */
  1705.   #include "common.h"
  1706.   
  1707.   #ifdef __DEF_ALL__
  1708.